package com.course.controller.admin;

import com.course.dto.CourseDTO;
import com.course.dto.PageBean;
import com.course.entity.Course;
import com.course.entity.Result;
import com.course.server.CourseService;
import com.course.vo.CourseList;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController("adminCourseController")
@CrossOrigin
@RequestMapping("/admin/course")
@Slf4j
@Tag(name="管理员-课程管理")
public class CourseController {
    @Resource
    private CourseService courseService;

    /**
     * 添加课程
     * @param courseDTO
     * @return
     */
    @PostMapping
    public Result addCourse(@RequestBody CourseDTO courseDTO){
        //记录日志
        log.info("新增课程:{}",courseDTO.getCname());
        //调用service方法
        courseService.addCourse(courseDTO);
        return Result.sucess();
    }

    /**
     * 根据课程号查询课程
     * @param cno
     * @return
     */
    @GetMapping("/{cno}")
    public Result SearchByCno(@PathVariable String cno){
        log.info("根据课程号查询课程信息:{}",cno);
        List<Course> SearchByCno=courseService.SearchByCno(cno);
        return Result.sucess(SearchByCno);
    }

    /**
     * 根据课程号删除课程号
     * @param cno
     * @return
     */
    @DeleteMapping("/{cno}")
    public Result DeleteByCno(@PathVariable String cno){
        log.info("根据课程号删除课程:{}",cno);
        courseService.deleteByCno(cno);
        return Result.sucess();
    }

    /**
     * 更新课程信息
     * @param courseDTO
     * @return
     */
    @PutMapping
    public Result update(@RequestBody CourseDTO courseDTO){
        log.info("更新课程信息:{}",courseDTO);
        courseService.update(courseDTO);
        return Result.sucess();
    }

    /**
     * 分页查询课程
     * @param page
     * @param pageSize
     * @param cno
     * @param cname
     * @param tno
     * @return
     */
    @GetMapping("/page")
    public Result page(@RequestParam(defaultValue = "1")Integer page,
                       @RequestParam(defaultValue = "10")Integer pageSize,String cno,String cname,String tno){
        //记录日志
        log.info("分页查询:{},{},{},{},{}",page,pageSize,cno,cname,tno);
        //调用service层分页查询
        PageBean pageBean=courseService.page(page,pageSize,cno,cname,tno);
        //返回结果给前端
        return Result.sucess(pageBean);
    }

    /**
     * 查询全部课程
     * @return
     */
    @GetMapping("/allCourse")
    public Result allCourse(){
        log.info("查询全部课程");
        List<CourseList> courseList=courseService.allCourse();
        return Result.sucess(courseList);
    }
}
